package com.kawa.controller;

import com.kawa.pojo.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

@RestController
public class UserController {

    @Value("${serverAddress.redis}")
    private String redisAddress;

    @GetMapping("/showConfig")
    public String showConfig(){
        return  redisAddress;
    }

    //开启服务熔断
    @GetMapping("/user/get/{id}")
    //@HystrixCommand(fallbackMethod = "getUserByIdError")
    public String getUserById(@PathVariable Long id){
        //1.手动设置异常
        //int res = 1/0;
        System.out.println("服务提供方执行根据id查询用户姓名");
        return "用户id："+id+"\t用户姓名：张三。";
    }


    //2.备选方案  用于服务熔断时进行服务降级
   /* public String getUserByIdError(@PathVariable Long id){
        System.out.println(" 进入服务熔断处理---- 服务提供方执行根据id查询用户姓名");
        return "当前用户不存在";
    }*/


    /**
     * 当有对象参数时，不能使用@GetMapping,必须使用@RequestMapping或@PostMapping
     * 参数想在服务间传递，必须被封装为json格式数据 因此需要在对象参数前添加@RequestBody注解
     * @param user
     * @return
     */
    @RequestMapping("/user/add")
    public User addUser(@RequestBody User user){
        user.setPassword("123321");
        System.out.println("服务提供方执行添加用户！");
        return  user;
    }

}
